package com.example.zlpermissionservice.api;

import com.example.zlpermissionservice.common.base.ResponseResult;
import com.example.zlpermissionservice.dto.request.ResourceReqDTO;
import com.example.zlpermissionservice.dto.response.MenuResDTO;
import com.example.zlpermissionservice.dto.response.ResourceResDTO;
import com.example.zlpermissionservice.dto.response.TreeResDTO;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * @Author zhenliu（孙凌岳）
 * @Description 提供给用户服务的资源RPC接口
 * @Date 2025/6/16 8:58
 * @Version 1.0
 */
@FeignClient(name = "zl-permission-service", path = "/permission/inner/resource")
public interface ResourceApi {

    /**
     * 删除菜单
     */
    Boolean remove(@PathVariable("menuId") String menuId);

    /**
     * 修改资源
     * @param resourceReqDTO
     * @return
     */
    Boolean updateResource(ResourceReqDTO resourceReqDTO);

    /**
     * 多条件查询资源列表
     * @param resourceReqDTO
     * @return
     */
    List<ResourceResDTO> findResourceList(@RequestBody ResourceReqDTO resourceReqDTO);

    /**
     * 根据角色id获取角色对应资源
     * @param userId 角色id
     * @return
     */
    public List<ResourceResDTO> findResourceResDTOListByUserId(Long userId);

    /**
     * 获取树形结构资源
     * @param resourceReqDTO
     * @return
     */
    @PostMapping("permission/inner/resource/tree")
    TreeResDTO resourceTreeResDTO(@RequestBody ResourceReqDTO resourceReqDTO);


    /**
     * 顶部菜单资源
     * @param userId 用户id
     * @return
     */
    List<MenuResDTO> menus(Long userId);

    /**
     * 获取按钮（后端接口）资源
     * @param userId
     * @return
     */
    List<MenuResDTO> buttons(Long userId);
}
